﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Hotel_Admin.Common;
using HOTEL.Dao;
using Hotel.Util;
using Hotel.Domain;

namespace Hotel_Admin
{
    public partial class QuanLyLoaiPhong : Authentication
    {
        private LoaiPhongDao loaiphongDao = new LoaiPhongDao();
        protected void Page_Load(object sender, EventArgs e)
        {
            CheckViewPermission();
            if (!Page.IsPostBack)
            {
                BindDataForGird();
            }
        }
        protected LOAI_PHONG HangPhong
        {
            get
            {
                if (!IsValidData())
                {
                    return null;
                }
                LOAI_PHONG obj = String.IsNullOrEmpty(txtMaLoaiPhong.Text.Trim()) ? new LOAI_PHONG() : loaiphongDao.Get(int.Parse(txtMaLoaiPhong.Text.Trim()));
                obj.TenLoaiPhong = txtTen.Text.Trim();
                obj.SoGiuong = int.Parse(txtSoGiuong.Text.Trim());
                return obj;
            }
            set
            {
                txtMaLoaiPhong.Text = value.MaLoaiPhong.ToString();
                txtTen.Text = value.TenLoaiPhong;
                txtSoGiuong.Text = value != null ? value.ToString() : "0";
                upInfor.Update();
            }
        }
        protected bool IsValidData()
        {
            if (String.IsNullOrEmpty(txtTen.Text.Trim()))
            {
                ShowError("Tên không được trống", txtTen.ClientID);
                return false;
            }
            return true;
        }
        protected void BindDataForGird()
        {
            var list = loaiphongDao.Search(txtTen.Text.Trim());
            gvList.DataSource = list;
            gvList.DataBind();
            upGird.Update();
        }
        protected void ClearForm()
        {
            txtTen.Text = "";
            txtMaLoaiPhong.Text = "";
            upInfor.Update();
        }
        protected void CheckViewPermission()
        {
            if (!HasViewPermission(Pages.QuanLyLoaiPhong.GetHashCode()))
            {
                Redirect(WebURL.UrlWebDinie);
            }
        }

        protected void gvList_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            var require = e.CommandName;
            var id = ConvertUtil.ToInteger(e.CommandArgument.ToString());
            if (!id.HasValue) return;
            switch (require)
            {
                case "EditItem":
                    var tang = loaiphongDao.Get(id.Value);
                    if(tang!=null)
                    {
                        HangPhong=tang;
                    }
                    break;
            }
        }

        protected void btnSave_Click(object sender, EventArgs e)
        {
            var obj = HangPhong;
            if (obj == null) return;
            if (string.IsNullOrEmpty(txtMaLoaiPhong.Text.Trim()))
            {
                // insert
                if (!HasInsertPermission(Pages.QuanLyLoaiPhong.GetHashCode()))
                {
                     Redirect(WebURL.UrlWebDinie);
                }
                var msg = loaiphongDao.Insert(obj);
                if (msg.MsgType != MessageType.Info)
                {
                    ShowError("Thêm loại phòng không thành công");
                    CloseWaitingDialog();
                }
                else
                {
                    ShowInfor("Thêm loại phòng thành công");
                    ClearForm();
                    BindDataForGird();
                    CloseWaitingDialog();
                }
            }
            else
            {
                // update
                if (!HasUpdatePermission(Pages.QuanLyLoaiPhong.GetHashCode()))
                {
                     Redirect(WebURL.UrlWebDinie);
                }
                var msg = loaiphongDao.Update(obj);
                if (msg.MsgType != MessageType.Info)
                {
                    ShowError("Cập nhật thông tin loại phòng không thành công");
                    CloseWaitingDialog();
                }
                else
                {
                    ShowInfor("Cập nhật thông tin loại phòng thành công");
                    ClearForm();
                    BindDataForGird();
                    CloseWaitingDialog();
                }
            }
        }

        protected void btnHuy_Click(object sender, EventArgs e)
        {
            ClearForm();
            CloseWaitingDialog();
        }

        protected void btnFilter_Click(object sender, EventArgs e)
        {
            BindDataForGird();
            CloseWaitingDialog();
        }

        protected void btnDelete_Click(object sender, EventArgs e)
        {
           
            // Authenticate
            if (!HasDeletePermission(Pages.QuanLyLoaiPhong.GetHashCode()))
            {
                CloseWaitingDialog();
                Redirect(WebURL.UrlWebDinie);
                return;
            }
            var strIds = Request["listIds"];
            if ((strIds != null) && (!string.Empty.Equals(strIds)))
            {
                var listIds = strIds.Split(',');

                // Kiem tra relation ship truoc khi delete
                string flag = "";
                foreach (var ma in listIds)
                {
                    var nv = loaiphongDao.Get(int.Parse(ma));
                    if (nv != null)
                    {
                        var msg = loaiphongDao.Delete(nv);
                        if (msg.MsgType == MessageType.Error)
                        {
                            flag += msg.ToString();
                            break;
                        }
                    }
                }
                if (string.IsNullOrEmpty(flag))
                {
                    ShowInfor("Xóa loại phòng thành Công");
                }
                else
                {
                    ShowError(flag);
                }
            }
            BindDataForGird();
            upGird.Update();
            CloseWaitingDialog();
        }
    }
}